namespace(:evaluacion) do
  desc "Asignar las preguntas correspondientes a los usuarios evaluados"
  task :asignar_preguntas => :environment do
    Evaluacion.all.each do |evaluacion|
      puts "\n\n\nEvaluacion #{evaluacion.nombre}"
      puts "------------------\n\n"
      #evaluados=evaluacion.evaluados.all(:select=>'distinct(evaluado_id)')
      evaluados=evaluacion.evaluados.find(:all,:conditions=>["(evaluado_id=275 and usuario_id=383) or (evaluado_id=383 and usuario_id=275)"])
      total=evaluados.count
      puts "Cantidad Evaluados: #{total}\n"
      evaluados.each_with_index do |eva,i|
        unless eva.evaluado.preguntas.por_evaluacion(eva).empty?
          puts "-----------------#{i+1}--de--#{total}--ya procesado----------------\n\n"
          next
        end
        puts "-----------------#{i+1}--de--#{total}------------------\n\n"
        puts "Evaluado: #{eva.evaluado.nombre}\n"
        eva.evaluado.asignar_preguntas(evaluacion)
        puts "---------------------------------------\n\n"
      end
    end
  end

  task :resultado_preguntas => :environment do
    Evaluacion.all.each do |evaluacion|
      puts "\n\n\nEvaluacion #{evaluacion.nombre}"
      puts "------------------\n\n"
      #evaluados=evaluacion.evaluados.all(:select=>'distinct(evaluado_id)')
      evaluados=evaluacion.evaluados.find(:all,:conditions=>["(evaluado_id=275 and usuario_id=383) or (evaluado_id=383 and usuario_id=275)"])
      total=evaluados.count
      puts "Cantidad Evaluados: #{total}\n"
      evaluados.each_with_index do |eva,i|
        puts "---------------EVALUADO--#{i+1}--de--#{total}------------------\n\n"
        usuario=eva.evaluado
        puts "Evaluado: #{usuario.nombre}\n"
        usuario_preguntas=usuario.usuarios_preguntas.por_evaluacion(evaluacion)
        total_preguntas=usuario_preguntas.count
        puts "Preguntas: #{total_preguntas}\n"
        usuario_preguntas.each_with_index do |up,j|
          puts "Pregunta: #{j+1} de #{total_preguntas}\n"
          up.resultado=up.usuario.porcentaje_por_pregunta(up.pregunta).round(2)
          puts "Evaluado: #{up.usuario.nombre}\n"
          puts "Pregunta: #{up.pregunta.texto}\n"
          puts "Resultado: #{up.resultado}\n"
          up.save
        end
        puts "---------------------------------------\n\n"
      end
    end
  end

  task :competencia_a_preguntas => :environment do
    Evaluacion.all.each do |evaluacion|
      puts "\n\n\nEvaluacion #{evaluacion.nombre}"
      puts "------------------\n\n"
      preguntas=evaluacion.preguntas
      total=preguntas.count
      puts "Cantidad preguntas #{total}\n\n"
      puts "------------------\n\n"
      preguntas.each_with_index do |pregunta,i|
        puts "---------------Pregunta--#{i+1}--de--#{total}------------------\n\n"
        pregunta.competencia_nombre=pregunta.competencia.titulo
        pregunta.competencia_tipo=pregunta.competencia.tipo
        pregunta.save
      end
    end
  end

  task :resultado_competencias=> :environment do
    Evaluacion.all.each do |evaluacion|
      puts "\n\n\nEvaluacion #{evaluacion.nombre}"
      puts "------------------\n\n"
      #evaluados=evaluacion.evaluados.all(:select=>'distinct(evaluado_id)')
      evaluados=evaluacion.evaluados.find(:all,:conditions=>["(evaluado_id=275 and usuario_id=383) or (evaluado_id=383 and usuario_id=275)"])
      total=evaluados.count
      puts "Cantidad Evaluados: #{total}\n"
      evaluados.each_with_index do |eva,i|
        puts "---------------EVALUADO--#{i+1}--de--#{total}------------------\n\n"
        usuario=eva.evaluado
        usuario.asignar_resultado_por_competencia(evaluacion)
      end
    end
  end

  task :datos_usuarios=> :environment do
    
    Evaluacion.all.each do |evaluacion|
      i=0
      puts "\n\n\nEvaluacion #{evaluacion.nombre}"
      puts "------------------\n\n"
      #evaluados=evaluacion.evaluados.all(:select=>'distinct(evaluado_id),usuario_id')
      evaluados=evaluacion.evaluados.find(:all,:conditions=>["(evaluado_id=275 and usuario_id=383) or (evaluado_id=383 and usuario_id=275)"])
      total=evaluados.count
      puts "Cantidad Evaluados: #{total}\n"
      evaluados.each do |evaluado|
        i+=1
        puts "---------------EVALUADO--#{i+1}--de--#{total}------------------\n\n"
        o=evaluado.evaluado.asignar_datos(evaluacion) if evaluado.evaluado
        r=evaluado.usuario.asignar_datos(evaluacion)  if evaluado.usuario
        puts "Creado datos para el evaluado #{evaluado.evaluado.nombre}" if o
        puts "Creado datos para el EVALUADOR #{evaluado.usuario.nombre}" if r
      end
    end
  end
end

